<?php

/**
 * Mascota form.
 *
 * @package    cronos-doctrine
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class MascotaForm extends BaseMascotaForm
{
  public function configure()
  {
      
      $this->removeField();
      
      $this->widgetSchema['empresa_id'] = new sfWidgetFormInputHidden(array(),array('value'=> sfContext::getInstance()->getUser()->getAttribute('agente_user_empresa_id')));
      
       $this->widgetSchema['especie_id'] = new sfWidgetFormDoctrineChoice(array(
                    'model'     => 'Especie',
                    'add_empty' => 'Seleccione la Especie',
      ));
//
      $this->widgetSchema['raza_id'] = new sfWidgetFormDoctrineDependentSelect(array(
	            'model'     => 'Raza',
                    'depends'   => 'Especie',
                    'add_empty' => 'Seleccione la Raza',
      ));
      
      $this->validatorSchema['especie_id'] = new sfValidatorPass();
      $this->widgetSchema->moveField('raza_id', 'after', 'especie_id');
      
      //Seteo del campo imagen para poder subir las fotos
      $this->widgetSchema['foto'] = new sfWidgetFormInputFileEditable(array(
        'label' => 'Foto de la Mascota',
        'file_src' =>  '/uploads/mascota/'.$this->getObject()->getFoto(),
        'is_image' => true,
        'edit_mode' => !$this->isNew(),
        'delete_label' => 'Borrar el Archivo',
        'template' => '<div>%file%<br />%input%<br />%delete%  %delete_label%</div> ',


      ));

      //Validacion del campo imagen para poder subir las fotos
      $this->validatorSchema['foto'] = new sfValidatorFile(array(
        'required' => false,
        'path' => sfConfig::get('sf_upload_dir').'/mascota',
        'mime_types' => 'web_images',

        //Agregar esta linea para transformar la imagen
        'validated_file_class' => 'sfResizedFileMascota'
      ));

      $this->validatorSchema['foto_delete'] = new sfValidatorPass();


      //Cambiar a lista y su validador de los status Activo e Inativo 0/1
      $this->widgetSchema['adopcion'] = new sfWidgetFormChoice(array(
         'choices' => Mascota::$adopcion,
         'expanded' => false,
         'multiple' => false,

      ));

      $this->validatorSchema['adopcion'] = new sfValidatorChoice(array(
          'choices' => array_keys(Mascota::$adopcion),
          'required' => false

      ));

      //Cambiar a lista y su validador de los required No o Si 0/1
      $this->widgetSchema['sexo'] = new sfWidgetFormChoice(array(
         'choices' => Mascota::$sexo,
         'expanded' => false,
         'multiple' => false,

      ));

      $this->validatorSchema['sexo'] = new sfValidatorChoice(array(
          'choices' => array_keys(Mascota::$sexo),

      ));

      //Descripcion de Mascotas
      $detalles = $this->getObject()->getMascotaDescripcion();
      
      if(!count($detalles)) {
          $detalles = array();
      }
      
      $detalles_form = new sfForm();
      $count = 0;

      if($this->isNew()){
          //Descipcion de Mascota
          $mascotaE = new MascotaEtiqueta();
          $mascotasE = $mascotaE->getMascotaE(1);
           
          
          foreach ($mascotasE as $mas ){
               $detalle = new MascotaDescripcion();
               $detalle->setMascotaEtiquetaId($mas->getId());
               $detalle->setMascota($this->getObject());
               
               $det_form = new MascotaDescripcionForm($detalle);
               $det_form->widgetSchema['mascota_etiqueta_id'] = new sfWidgetFormInputHidden();
               $det_form->widgetSchema->setLabels(array('mascota_etiqueta_id'    => $mas->getNombre()));
               
               if($mas->getRequired()){
                    $det_form->widgetSchema['required'] = new sfWidgetFormInputHidden();
               }else {
                    $det_form->widgetSchema['id'] = new sfWidgetFormInputHidden(array(),array('value' => $detalle->getId()));  
               }
               
               $detalles_form->embedForm($count, $det_form);
               $count++;
               array_push ($detalles, $detalle);
           }
           
           //Etiquetas no obligatorias
           
           $mascotaE = new MascotaEtiqueta();
           $mascotasE = $mascotaE->getMascotaE(0);
           
           foreach ($mascotasE as $mas ){
               $detalle = new MascotaDescripcion();
               $detalle->setMascotaEtiquetaId($mas->getId());
               $detalle->setMascota($this->getObject());
               
               $det_form = new MascotaDescripcionForm($detalle);
               $det_form->widgetSchema['mascota_etiqueta_id'] = new sfWidgetFormInputHidden();
               $det_form->widgetSchema->setLabels(array('mascota_etiqueta_id'    => $mas->getNombre()));
               
               if($mas->getRequired()){
                    $det_form->widgetSchema['required'] = new sfWidgetFormInputHidden();
               }else {
                    $det_form->widgetSchema['id'] = new sfWidgetFormInputHidden(array(),array('value' => $detalle->getId()));
                    $det_form->validatorSchema['nombre']->setOption('required', false);
               }
               
               $detalles_form->embedForm($count, $det_form);
               $count++;
               array_push ($detalles, $detalle);
           }
       }else {
       
         foreach ($detalles as $detalle){
            $det_form = new MascotaDescripcionForm($detalle);
            $det_form->widgetSchema['mascota_etiqueta_id'] = new sfWidgetFormInputHidden();
            $det_form->widgetSchema->setLabels(array('mascota_etiqueta_id'    => $detalle->getMascotaEtiqueta()));
            if($detalle->getMascotaEtiqueta()->getRequired()){
                $det_form->widgetSchema['required'] = new sfWidgetFormInputHidden();
            }else {
                $det_form->widgetSchema['id'] = new sfWidgetFormInputHidden(array(),array('value' => $detalle->getId()));  
            }
            $detalles_form->embedForm($count, $det_form);
            $count++;
        }}
       
        $this->embedForm('detalles', $detalles_form);
      // Fin Mascotas Detalles
  }
  
  protected function removeField() {
      //Eliminar los campos del formularios  created_at y updated_at
      unset (
        $this['created_at'],
        $this['updated_at'],
        $this['servicio_list']

      );
  }
  
  
  public function addDetalle($num) {
      
      $mascotaE = new MascotaEtiqueta();
      $mascotasE = $mascotaE->getMascotaE(0) ;
      
      if($mascotasE->count()!=0){
        
        $det = new MascotaDescripcion();  
        $det->setMascotaEtiqueta($mascotasE->getFirst());
        $det->setMascota($this->getObject());

        $det_form = new MascotaDescripcionForm($det);
        $this->embeddedForms['detalles']->embedForm($num, $det_form);
        $this->embedForm('detalles', $this->embeddedForms['detalles']);
      }else {
          exit;
      }    
  }
  
  public function  bind(array $taintedValues = null, array $taintedFiles = null) {

    if(isset($taintedValues['detalles'])){
       
        foreach ($taintedValues['detalles'] as $key => $newPre)
        {
            if(!isset ($this['detalles'][$key])){
                $this->addDetalle($key);
            }
        }
    }
    
    parent::bind($taintedValues, $taintedFiles);
  }
}
